package shupaiwen;

//二维数组版本
//由于数字、字母只占一格，汉字占两格，都会造成不能对齐，因此在转换时会将其转为全角
//由于在控制台输入不能回车，使用读入文本内容实现将多段文字转为竖排
//某些不对齐的地方,某些源(“)可能会出现部分转换错误，使用ｗｏｒｄ查看即可
//以最大列数右对齐
//预览输出功能，将软件打包时用到，使用预览功能出现正式运行的提示并显示操作，输出内容到界面
//自动检查编码功能
//检查有没有两个相连的回车
//文章里最好不要有英文、数字串，要不然转换出来的结果会让你很郁闷的
/**
 * 处理文章的功能 遇到回车，进行分段 用正则表达式，将回车分成段落
 * 
 * @author heantai
 */

public class Shupaiban {


	/**
	 * 文字竖排方法
	 * 
	 * @param MAX_COL,最大列数，右对齐
	 * @param str
	 *            输入的横排文字
	 * @param rows
	 *            竖排输出行数
	 * @return 竖排文字
	 */
	
	//有空格
	static String shupaiwenzihasspace(String str, int MAX_COL){
		str = QuanjiaoBanjiao.toquanjiao(str);
		int size = 2*str.length();
		int cols = 2*MAX_COL;
//		int cols = MAX_COL;
		int rows = size % cols == 0 ? size / cols : size / cols + 1;
		char[][] cs = new char[rows][cols];
		int idx = 0;
		int x = cols%2;//确定文字是在奇数列还是在偶数列
		for (int col = cols - 1; col >= 0; col--) {
			if(col%2!=x){
				for (int row = 0; row < rows; row++) {
					if (idx < str.length()) {
						char c = str.charAt(idx++);
						cs[row][col] = c;
					} else
						cs[row][col] = '　';
				}
			}
			
			if(col%2==x){
				for (int row = 0; row < rows; row++) {
						cs[row][col] = '　';
				}
			}
			
		}
		String s = chtostr(cs,rows,cols);
		return s;
	}
	
	//无空格
	static String shupaiwenzinospace(String str, int MAX_COL) {
		str = QuanjiaoBanjiao.toquanjiao(str);
		int size = str.length();
		int cols = MAX_COL;
		int rows = size % cols == 0 ? size / cols : size / cols + 1;
		char[][] cs = new char[rows][cols];
		int idx = 0;
		for (int col = cols - 1; col >= 0; col--) {
			for (int row = 0; row < rows; row++) {
				if (idx < size) {
					char c = str.charAt(idx++);
					cs[row][col] = c;
				} else
					cs[row][col] = '　';
			}
		}
		String s = chtostr(cs,rows,cols);
		return s;
	}
	
	public static String chtostr(char[][] cs,int rows,int cols){
//		 将竖排的文字连接成字符串用来输出到文本
		String s = "";
		for (int row = 0; row < rows; row++) {
			for (int col = 0; col < cols; col++) {
				s = s + cs[row][col];
			}
			s = s + '\n';
		}
		return s;
	}
	
}
